package tech.aistar.corejava.day07;

/**
 * Created by 豆梦寒 on 2019/7/23.
 */
public class CodeDemo {
    //非静态属性
    private int id = 10;
    //静态属性
    private static int sid=100;
    //构造块 - 只要new对象的时候
    public CodeDemo(){
        System.out.println("构造块");
        System.out.println("构造块"+id);
        System.out.println("构造块"+sid);
    }
    //普通代码块 - 每次创建对象的时候会优先调用普通代码块
    //普通代码块的执行时机高于构造块
    //但是实际开发中,我们不使用普通代码块,一般会将普通代码块中的
    //代码移植到构造块中
    {
        System.out.println("普通代码块");
        System.out.println("普通代码块"+id);
        System.out.println("普通代码块"+sid);
    }
    //静态代码块 - JVM加载类进内存的时候 - 会优先给静态代码块分配空间
    //和初始化 - 并且初始化的时机仅仅只有一次
    static {
        System.out.println("静态代码块");
        System.out.println("静态代码块"+sid);
        //不能直接使用非静态属性.
    }

    public static void main(String[] args) {
        CodeDemo c1 = new CodeDemo();
        CodeDemo c2 = new CodeDemo();
    }
}
